昨天講到了 exit code ,今天來講 exit code 的應用吧。
既然 exit code 可以拿來識別成功失敗,那麼拿來跟 if 配在一起用就在合理不過了:
if echo msg; then
echo successful
fi
由於 Shell 沒有大括號 {} ,也不像 Python 用縮排定位,所以這裡就用 if 跟 fi 要執行的命令包起來。當然 Shell 裡面的 if 是可以有 else 的:
if rm record.txt; then
echo delete succssful
else
echo delete failed
fi
接著來介紹一個好用的指令:[
對別懷疑這個也是 Shell 可以呼叫的程式,就叫做 [。他本身不會回傳任何訊息,但是會回傳 exit code 方便使用,以下是幾個常用的方式:
[ -n "$VAR"]:判斷字串有沒有內容[ "$VAR" == "STR" ]:判斷 $VAR 的內容是否與 STR 相等[ "$VAR" != "STR" ]:判斷 $VAR 的內容是否與 STR 不相等[ -e ./node_module ]:判斷檔案是否存在(無論資料夾或檔案)[ -d ./node_module ]:判斷資料夾是否存在[ -f package.json ]:判斷檔案是否存在(不可以是資料夾)其他就請自己 man [ 來查囉。
除了用 if 寫好幾行的判斷外,其實 && 與 || 也有類似效果,當你需要把指令縮成一行(像是你要在 package.json 裡面插入判斷式的時候),以上面的
if rm record.txt; then
echo delete succssful
else
echo delete failed
fi
來講,你可以把他寫成 rm record.txt && echo successful || echo failed。
那分號的功能呢?假如你寫了以下的判斷式:
if [ -d node_module]; then
rm -rf node_module
fi
npm install
要怎麼塞成一行呢?平常我們可以用換行表示上一個指令結束,不過為了縮成一行,我們就用 ; 來代替換行吧:[ -d node_module] && rm -rf node_module; npm install ,是的跟 Python 有點像,可以用 ; 來取代換行。
我是誰?
我是 dd-han ,可以叫我呆翰,是國立臺中科技大學的延畢生 與 創科資訊的時習生。